/**
 * 使用class关键字来定义一个类
 * 对象中主要包含了两个部分：属性、方法
 */
class Person{
  /**
   * 直接定义的属性是实例属性，需要通过对象的实例去访问：
   *   const person = new Person();
   *   person.name
   * 使用static开头的属性是静态属性（类属性），可以直接通过类去访问
   *   Person.age
   * readonly开头的属性表示一个只读的属性无法修改
   */

  // 定义实例属性
  // name: string = '诸葛亮';
  // readonly name: string = '诸葛亮';
  name = '诸葛亮';

  // 在属性前使用static关键字可以定义类属性（静态属性）
  // static age: number = 18;
  // age: number = 18;
  age = 18;

  // 定义方法
  // 如果方法以static开头则方法就是类方法，可以直接通过类去调用
  static sayHi() {
    console.log('hi...');
    
  }

}

const person = new Person();
// console.log(person)
// console.log(Person.age)

// person.name = '司马懿';
// console.log(person.name)

// person.sayHi();
Person.sayHi();